home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / arexx / cnvrtp34.lha / ConvertPICs.adpro
Text File  |  1996-05-19  |  9KB  |  405 lines

  1. /*
  2.  * $VER: ConvertPICs.adpro 3.4 (19.05.96)
  3.  *
  4.  * ©1995-96 Mirko Lukas
  5.  *        Im Ziegenförth 5
  6.  *        38108 Braunschweig
  7.  *        iceman@leslie.s-link.de
  8.  *
  9.  * Danke an:
  10.  * Detlef Peukert (poi@thunder.mcnet.de)
  11.  * Thomas Boerkel (tom@ai.inka.de)
  12.  *
  13.  * Script um ein komplettes Verzeichnis zu
  14.  * konvertieren. Es werden sowohl Format
  15.  * als auch Auflösung konvertiert.
  16.  *
  17.  * $HISTORY:
  18.  *
  19.  * 08.04.96    : 3.0    initial release
  20.  * 09.04.96    : 3.1    Fehler beim scalieren behoben
  21.  * 10.04.96    : 3.2    Optional können kleinere Bilder
  22.  *            übersprungen werden
  23.  * 14.05.96    : 3.3    Fehler beim berechnen der zu
  24.  *            scalierenden Größe behoben
  25.  *            Genauere Einhaltung der Vorgaben
  26.  * 19.05.96    : 3.4    Fehler beim errechnen der Größe
  27.  *            behoben
  28.  *
  29.  */
  30.  
  31. /* Nur von ADpro aus zu starten */
  32. if ~show('p', "ADPro") then exit 20
  33.  
  34. options results
  35. address "ADPro"
  36.  
  37. tempdefaults    = "T:TempADProDefaults"
  38. prefsfile    = "convert.prefs"
  39. filelist    = "T:TempFileList"
  40.  
  41. nl        = '0A'x
  42.  
  43. /*********************************************************/
  44.  
  45. /* aktuelle ADPro-Einstellungen sichern */
  46. call save_conf
  47.  
  48. /* Eigene Konfiguration laden */
  49. call read_my_conf
  50.  
  51. version
  52. ver = adpro_result
  53.  
  54. serial_number
  55. num = adpro_result
  56.  
  57. /* Gag */
  58. if (num = "") then num = "Raupkopie"
  59.  
  60. do while (cancel ~= 0)
  61.  okayn    '"'def_ver'"',
  62.     '"Settings:' || nl || nl ||,
  63.      'Version: ' || ver || nl ||,
  64.      'Serialnumber: ' || num || nl || nl ||,
  65.      'max. x size: ' || def_x || nl ||,
  66.      'max. y size: ' || def_y || nl ||,
  67.      'Skip smaller pictures: ' || def_skip || nl ||,
  68.      'Saver module: ' || def_saver || nl ||,
  69.      'Save format: ' || def_image || nl ||,
  70.      'JPEG compression : ' || def_comp || nl ||,
  71.      'Delete old files: ' || def_del'"',
  72.     '"Use|Load|Edit|Save as...|Exit"'
  73.  
  74.  if (rc ~= 0) then do
  75.  
  76.   /* action */
  77.   if (rc = 1) then do
  78.    last_loaded_image
  79.    olddir = adpro_result
  80.    call get_dir olddir
  81.    workdir = result
  82.    if (workdir ~= 0) then do
  83.  
  84.     /* Extension auswählen */
  85.     call set_ext
  86.     ext = result
  87.  
  88.     /* Counter */
  89.     i_ges = 0
  90.     i_sca = 0
  91.     i_not = 0
  92.     i_sav = 0
  93.  
  94.     /* Screenmode einstellen, wenn rendern auf ja */
  95.     if (def_image = "Rendered") then do
  96.      get_screen_mode '"Select a screenmode to render"' Amiga "XXX" def_x def_y 256
  97.      if (rc = 0) then
  98.       set_render_mode adpro_result
  99.     end
  100.  
  101.     /* Fileliste erstellen */
  102.     address command "list " || workdir || " >" || filelist || " lformat %p%n files pat ~(#?.info)"
  103.  
  104.     adpro_to_front
  105.     if (open(file, filelist, 'READ')) then do
  106.      do while ~eof(file)
  107.       line = readln(file)
  108.       if (line ~= "") then do
  109.        loader "UNIVERSAL" line
  110.        if (rc ~= 0) then leave
  111.  
  112.        /* Größe */
  113.        xsize
  114.        width = adpro_result
  115.  
  116.        ysize
  117.        height = adpro_result
  118.  
  119.        /* zählen gesamt */
  120.        i_ges = i_ges + 1
  121.  
  122.        /* scalieren */
  123.        if (width > def_x | height > def_y) then do
  124.     if ((width/height) * def_y <= def_x) then do
  125.      abs_scale width*def_y/height def_y
  126.      if (rc ~= 0) then leave
  127.      scale = 1
  128.      i_sca = i_sca + 1
  129.     end
  130.     else do
  131.      abs_scale def_x height*def_x/width
  132.      if (rc ~= 0) then leave
  133.      scale = 1
  134.      i_sca = i_sca + 1
  135.     end
  136.        end
  137.        else do
  138.     scale = 0
  139.     i_not = i_not + 1
  140.        end
  141.  
  142.        if (def_skip = "No" | (def_skip = "Yes" & scale = 1)) then do
  143.  
  144.     /* rendern */
  145.     if (def_image = "Rendered") then do
  146.     execute
  147.     close_render_screen
  148.     end
  149.  
  150.     /* mitzählen */
  151.     i_sav = i_sav + 1
  152.  
  153.     /* Löschen */
  154.     if (def_del = "Yes") then
  155.      address command "delete quiet " || line
  156.  
  157.     /* Extension abschneiden */
  158.     if (left(right(line, 4), 1) = ".") then
  159.      line = delstr(line, lastpos('.', line), 4)
  160.  
  161.     /* Neue Extension */
  162.     line = line || ext
  163.  
  164.     /* Speichern */
  165.     if (def_saver = "JPEG") then do
  166.      saver def_saver line "RAW" quality def_comp
  167.      if (rc ~= 0) then leave
  168.     end
  169.     else do
  170.      if (def_image = "Rendered") then
  171.       saver def_saver line "IMAGE"
  172.      else
  173.       saver def_saver line "RAW"
  174.      if (rc ~= 0) then leave
  175.     end
  176.     address command "protect " || line || " -e"
  177.  
  178.        end
  179.       end
  180.      end
  181.      dummy = close(file)
  182.     end
  183.  
  184.    /* Meldung ausgeben */
  185.    okayn '"'def_ver'"',
  186.      '"Pictures found: ' || i_ges || nl || nl ||,
  187.       'Pictures procceded: ' || i_sca || nl ||,
  188.       'Pictures not scaled: ' || i_not || nl || nl ||,
  189.       'Pictures saved: ' || i_sav'"',
  190.      '"Continue"'
  191.  
  192.     /* Fileliste löschen */
  193.     address command "delete quiet" filelist
  194.    end
  195.   end
  196.  
  197.   /* settings laden */
  198.   if (rc = 2) then do
  199.    getfile '"Load ..." "" "'prefsfile'"'
  200.    if (rc ~= 0) then do
  201.     okay1 "No file specified."
  202.    end
  203.    else do
  204.     prefsfile = adpro_result
  205.     call read_my_conf
  206.    end
  207.   end
  208.  
  209.   /* edit settings*/
  210.   if (rc = 3) then do
  211.    /* x size */
  212.    getnumber '"enter max. width"' def_x 3 16383
  213.    if (rc = 0) then def_x = adpro_result
  214.  
  215.    /* y size */
  216.    getnumber '"enter max. height"' def_y def_x/4*3 16383
  217.    if (rc = 0) then def_y = adpro_result
  218.  
  219.    /* Skip smaller pic's */
  220.    okayn '"'def_ver'"' '"Skip smaller pictures?"' '"Yes|No"'
  221.    if (rc = 0) then
  222.     def_skip = "No"
  223.    else
  224.     def_skip = "Yes"
  225.  
  226.    /* Saver module */
  227.    getlist saver
  228.    if (rc = 0) then do
  229.     saverlist = adpro_result
  230.     listview '"Select a saver"' 10 sort items saverlist
  231.     if (rc >= 5) then
  232.      okay1 "An error occured, using old saver module."
  233.     else
  234.      parse var adpro_result '"'def_saver'"'
  235.    end
  236.  
  237.    /* Dateiformat */
  238.    if (def_saver ~= "JPEG") then do
  239.     okayn '"'def_ver'"' '"Save rendered or raw data?"' '"Rendered|Raw"'
  240.     if (rc = 0) then
  241.      def_image = "Raw"
  242.     else
  243.      def_image = "Rendered"
  244.    end
  245.    else do
  246.     def_image = "Raw"
  247.    end
  248.  
  249.    /* Compression */
  250.    if (def_saver = "JPEG") then do
  251.     getnumber '"Select compression quality for jpeg"' def_comp 1 1000
  252.     if (rc = 0) then def_comp = adpro_result
  253.    end
  254.  
  255.    /* Alte Bilder löschen */
  256.    okayn '"'def_ver'"' '"Delete converted files?"' '"Yes|No"'
  257.    if (rc = 0) then
  258.     def_del = "No"
  259.    else
  260.     def_del = "Yes"
  261.   end
  262.  
  263.   /* settings sichern */
  264.   if (rc = 4) then do
  265.    getfile '"Save as ..." "" "'prefsfile'"'
  266.    if (rc ~= 0) then do
  267.     okay1 "No file specified."
  268.    end
  269.    else do
  270.      prefsfile = adpro_result
  271.     if (open(prefs, prefsfile, 'WRITE')) then do
  272.      dummy = writeln(prefs, def_ver)
  273.      dummy = writeln(prefs, def_x)
  274.      dummy = writeln(prefs, def_y)
  275.      dummy = writeln(prefs, def_skip)
  276.      dummy = writeln(prefs, def_saver)
  277.      dummy = writeln(prefs, def_image)
  278.      dummy = writeln(prefs, def_del)
  279.      dummy = writeln(prefs, def_comp)
  280.      dummy = writeln(prefs, num)
  281.      dummy = close(prefs)
  282.      address command "protect "prefsfile" -e"
  283.     end
  284.    end
  285.   end
  286.  end
  287.  else do
  288.  cancel = 0
  289.  end
  290. end
  291.  
  292. call restore_conf
  293. exit 0
  294.  
  295.  
  296. /**
  297.  ** Ausgelagerte Funktionen
  298.  **/
  299.  
  300. /* Extension ermitteln */
  301. set_ext:
  302. extension = ""
  303. if (def_saver = "ALIAS") then extension = ".als"
  304. if (def_saver = "ANIM") then extension = ".anim"
  305. if (def_saver = "BMP") then extension = ".bmp"
  306. if (def_saver = "CDXL") then extension = ".cdxl"
  307. if (def_saver = "GIF") then extension = ".gif"
  308. if (def_saver = "ICON") then extension = ".info"
  309. if (def_saver = "IFF") then extension = ".iff"
  310. if (def_saver = "JPEG") then extension = ".jpg"
  311. if (def_saver = "PCX") then extension = ".pcx"
  312. if (def_saver = "PICT") then extension = ".pic"
  313. if (def_saver = "POSTSCRIPT") then extension = ".eps"
  314. if (def_saver = "QRT") then extension = ".qrt"
  315. if (def_saver = "SGI") then extension = ".sgi"
  316. if (def_saver = "TARGA") then extension = ".tga"
  317. if (def_saver = "TIFF") then extension = ".tif"
  318. if (def_saver = "X") then extension = ".x"
  319. return extension
  320.  
  321.  
  322. /* Eigene Konfiguration laden */
  323. read_my_conf:
  324. if (open(prefs, prefsfile, 'READ')) then do
  325.  def_ver    = readln(prefs)
  326.  def_x        = readln(prefs)
  327.  def_y        = readln(prefs)
  328.  def_skip    = readln(prefs)
  329.  def_saver    = readln(prefs)
  330.  def_image    = readln(prefs)
  331.  def_del    = readln(prefs)
  332.  def_comp    = readln(prefs)
  333.  dummy        = close(prefs)
  334. end
  335. else do
  336.  def_ver    = "ConvertPICs.adpro 3.4"
  337.  def_x        = 800
  338.  def_y        = 600
  339.  def_skip    = "Yes"
  340.  def_saver    = "JPEG"
  341.  def_image    = "Raw"
  342.  def_del    = "No"
  343.  def_comp    = 32
  344. end
  345. if (compare(def_ver, "ConvertPICs.adpro 3.4") ~= 0) then do
  346.  okay1 '"Configfile unuseable, using default settings."'
  347.  def_ver    = "ConvertPICs.adpro 3.4"
  348.  def_x        = 800
  349.  def_y        = 600
  350.  def_skip    = "Yes"
  351.  def_saver    = "JPEG"
  352.  def_image    = "Raw"
  353.  def_del    = "No"
  354.  def_comp    = 32
  355. end
  356. return
  357.  
  358.  
  359. /* Verzeichnis ermitteln */
  360. get_dir:
  361. parse arg defdir
  362. if (rc ~= 0) then
  363.  defdir = "Ram:"
  364. else
  365.  defdir = adpro_result
  366.  
  367. if (lastpos("/", defdir) ~= 0) then
  368.  defdir = delstr(defdir, lastpos("/", defdir))
  369. else
  370.  if (lastpos(":", defdir) ~= 0) then
  371.   defdir = delstr(defdir, (lastpos(":", defdir)+1))
  372. /* Auswahl */
  373. getdir "'Select directory'" defdir
  374. if (rc ~= 0) then do
  375.  okay1 "no directory specified."
  376.  return 0
  377. end
  378. else do
  379.  defdir = adpro_result
  380.  return defdir
  381. end
  382.  
  383.  
  384. /* Einstellungen sichern */
  385. save_conf:
  386. save_defaults tempdefaults
  387. if (rc ~= 0) then do
  388.  adpro_to_front
  389.  okay1 "Error saving settings."
  390. end
  391. return
  392.  
  393.  
  394. /* Einstellungen laden */
  395. restore_conf:
  396. if (exists(tempdefaults)) then do
  397.  load_defaults tempdefaults
  398.  if (rc ~= 0) then do
  399.   adpro_to_front
  400.   okay1 "Error restoring settings."
  401.  end
  402.  address command "delete quiet" tempdefaults
  403. end
  404. return
  405.